package com.waigoulin.domain.order.model.entity;

import com.waigoulin.domain.order.model.valobj.OrderStatusVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @FileName OrderEntity
 * @Description 订单领域层与基础设施层映射的实体对象 ———— 由于依赖倒置，领域层不能直接访问基础设施层的持久化数据的订单实体对象，故将部分领域层会使用到的字段抽出成一个订单映射实体对象
 * @Author waigoulin
 * @date 2025-07-31
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderEntity {
    // 自增ID
    private Long id;
    // 用户ID
    private String userId;
    // 商品ID
    private String productId;
    // 商品名称
    private String productName;
    // 订单ID
    private String orderId;
    // 下单时间
    private LocalDateTime orderTime;
    // 订单金额
    private BigDecimal totalAmount;
    // 订单状态；create-创建完成、pay_wait-等待支付、pay_success-支付成功、deal_done-交易完成、close-订单关单
    private OrderStatusVO orderStatusVO;
    // 支付信息
    private String payUrl;
}


